# CMakeLists for OpenDDS_Dcps
cmake_minimum_required(VERSION 3.23...4.0)
project(opendds_dcps CXX)

set(dcps_lib_deps
  ACE::ACE
  TAO::TAO
  TAO::PortableServer
  TAO::BiDirGIOP
  TAO::Valuetype
)
find_package(OpenDDS REQUIRED NO_DEFAULTS TAO::tao_idl OpenDDS::opendds_idl ${dcps_lib_deps})
include(opendds_build_helpers)

add_library(OpenDDS_Dcps
  DCPS/BitPubListenerImpl.cpp
  DCPS/BuiltInTopicUtils.cpp
  DCPS/CoherentChangeControl.cpp
  DCPS/ConditionImpl.cpp
  DCPS/ConfigStoreImpl.cpp
  DCPS/ConnectionRecords.cpp
  DCPS/ContentFilteredTopicImpl.cpp
  DCPS/DCPS_Utils.cpp
  DCPS/DataDurabilityCache.cpp
  DCPS/DataReaderImpl.cpp
  DCPS/DataSampleElement.cpp
  DCPS/DataSampleHeader.cpp
  DCPS/DataWriterImpl.cpp
  DCPS/DcpsUpcalls.cpp
  DCPS/DdsDcps_pch.cpp
  DCPS/Discovery.cpp
  DCPS/DisjointSequence.cpp
  DCPS/DispatchService.cpp
  DCPS/DomainParticipantFactoryImpl.cpp
  DCPS/DomainParticipantImpl.cpp
  DCPS/EncapsulationHeader.cpp
  DCPS/EntityImpl.cpp
  DCPS/EventDispatcher.cpp
  DCPS/FileSystemStorage.cpp
  DCPS/FilterEvaluator.cpp
  DCPS/FlexibleTypeSupport.cpp
  DCPS/GroupRakeData.cpp
  DCPS/GuardCondition.cpp
  DCPS/GuidBuilder.cpp
  DCPS/GuidConverter.cpp
  DCPS/GuidUtils.cpp
  DCPS/Hash.cpp
  DCPS/InstanceDataSampleList.cpp
  DCPS/InstanceHandle.cpp
  DCPS/InstanceState.cpp
  DCPS/JobQueue.cpp
  DCPS/LinuxNetworkConfigMonitor.cpp
  DCPS/LogAddr.cpp
  DCPS/Logging.cpp
  DCPS/Marked_Default_Qos.cpp
  DCPS/MemoryPool.cpp
  DCPS/MessageBlock.cpp
  DCPS/MessageTracker.cpp
  DCPS/MonitorFactory.cpp
  DCPS/MultiTask.cpp
  DCPS/MultiTopicDataReaderBase.cpp
  DCPS/MultiTopicImpl.cpp
  DCPS/MulticastManager.cpp
  DCPS/NetworkAddress.cpp
  DCPS/NetworkConfigModifier.cpp
  DCPS/NetworkConfigMonitor.cpp
  DCPS/NetworkResource.cpp
  DCPS/Observer.cpp
  DCPS/OwnershipManager.cpp
  DCPS/PeriodicEvent.cpp
  DCPS/PeriodicTask.cpp
  DCPS/PublisherImpl.cpp
  DCPS/Qos_Helper.cpp
  DCPS/QueryConditionImpl.cpp
  DCPS/RawDataSample.cpp
  DCPS/ReactorTask.cpp
  DCPS/ReadConditionImpl.cpp
  DCPS/ReceivedDataElementList.cpp
  DCPS/ReceivedDataStrategy.cpp
  DCPS/Recorder.cpp
  DCPS/RecorderImpl.cpp
  DCPS/Registered_Data_Types.cpp
  DCPS/Replayer.cpp
  DCPS/ReplayerImpl.cpp
  DCPS/RepoIdBuilder.cpp
  DCPS/RepoIdConverter.cpp
  DCPS/RepoIdGenerator.cpp
  DCPS/SafetyProfilePool.cpp
  DCPS/SafetyProfileSequences.cpp
  DCPS/SafetyProfileStreams.cpp
  DCPS/SendStateDataSampleList.cpp
  DCPS/SequenceNumber.cpp
  DCPS/Serializer.cpp
  DCPS/ServiceEventDispatcher.cpp
  DCPS/Service_Participant.cpp
  DCPS/SporadicEvent.cpp
  DCPS/SporadicTask.cpp
  DCPS/StaticDiscovery.cpp
  DCPS/StatusConditionImpl.cpp
  DCPS/SubscriberImpl.cpp
  DCPS/SubscriptionInstance.cpp
  DCPS/ThreadPool.cpp
  DCPS/ThreadStatusManager.cpp
  DCPS/TimeDuration.cpp
  DCPS/Time_Helper.cpp
  DCPS/TopicDescriptionImpl.cpp
  DCPS/TopicImpl.cpp
  DCPS/Transient_Kludge.cpp
  DCPS/TypeSupportImpl.cpp
  DCPS/ValueCommon.cpp
  DCPS/ValueReader.cpp
  DCPS/ValueWriter.cpp
  DCPS/WaitSet.cpp
  DCPS/WriteDataContainer.cpp
  DCPS/WriterDataSampleList.cpp
  DCPS/WriterInfo.cpp
  DCPS/Xcdr2ValueWriter.cpp
  DCPS/XTypes/DynamicDataAdapter.cpp
  DCPS/XTypes/DynamicDataBase.cpp
  DCPS/XTypes/DynamicDataFactory.cpp
  DCPS/XTypes/DynamicDataImpl.cpp
  DCPS/XTypes/DynamicDataReaderImpl.cpp
  DCPS/XTypes/DynamicDataXcdrReadImpl.cpp
  DCPS/XTypes/DynamicSample.cpp
  DCPS/XTypes/DynamicTypeImpl.cpp
  DCPS/XTypes/DynamicTypeMemberImpl.cpp
  DCPS/XTypes/DynamicTypeSupport.cpp
  DCPS/XTypes/DynamicVwrite.cpp
  DCPS/XTypes/IdlScanner.cpp
  DCPS/XTypes/MemberDescriptorImpl.cpp
  DCPS/XTypes/TypeAssignability.cpp
  DCPS/XTypes/TypeDescriptorImpl.cpp
  DCPS/XTypes/TypeLookupService.cpp
  DCPS/XTypes/TypeObject.cpp
  DCPS/XTypes/Utils.cpp
  DCPS/debug.cpp
  DCPS/security/framework/HandleRegistry.cpp
  DCPS/security/framework/SecurityConfig.cpp
  DCPS/security/framework/SecurityPluginInst.cpp
  DCPS/security/framework/SecurityRegistry.cpp
  DCPS/transport/framework/BuildChainVisitor.cpp
  DCPS/transport/framework/CopyChainVisitor.cpp
  DCPS/transport/framework/DataLink.cpp
  DCPS/transport/framework/DataLinkCleanupTask.cpp
  DCPS/transport/framework/DataLinkSet.cpp
  DCPS/transport/framework/DirectPriorityMapper.cpp
  DCPS/transport/framework/MessageDropper.cpp
  DCPS/transport/framework/NullSynch.cpp
  DCPS/transport/framework/NullSynchStrategy.cpp
  DCPS/transport/framework/PacketRemoveVisitor.cpp
  DCPS/transport/framework/PerConnectionSynch.cpp
  DCPS/transport/framework/PerConnectionSynchStrategy.cpp
  DCPS/transport/framework/PoolSynch.cpp
  DCPS/transport/framework/PoolSynchStrategy.cpp
  DCPS/transport/framework/PriorityKey.cpp
  DCPS/transport/framework/PriorityMapper.cpp
  DCPS/transport/framework/QueueRemoveVisitor.cpp
  DCPS/transport/framework/ReactorSynch.cpp
  DCPS/transport/framework/ReactorSynchStrategy.cpp
  DCPS/transport/framework/ReceiveListenerSet.cpp
  DCPS/transport/framework/ReceiveListenerSetMap.cpp
  DCPS/transport/framework/ReceivedDataSample.cpp
  DCPS/transport/framework/RemoveAllVisitor.cpp
  DCPS/transport/framework/ScheduleOutputHandler.cpp
  DCPS/transport/framework/SendResponseListener.cpp
  DCPS/transport/framework/ThreadPerConRemoveVisitor.cpp
  DCPS/transport/framework/ThreadPerConnectionSendTask.cpp
  DCPS/transport/framework/ThreadSynch.cpp
  DCPS/transport/framework/ThreadSynchResource.cpp
  DCPS/transport/framework/ThreadSynchStrategy.cpp
  DCPS/transport/framework/ThreadSynchWorker.cpp
  DCPS/transport/framework/TransportClient.cpp
  DCPS/transport/framework/TransportConfig.cpp
  DCPS/transport/framework/TransportControlElement.cpp
  DCPS/transport/framework/TransportCustomizedElement.cpp
  DCPS/transport/framework/TransportDebug.cpp
  DCPS/transport/framework/TransportHeader.cpp
  DCPS/transport/framework/TransportImpl.cpp
  DCPS/transport/framework/TransportInst.cpp
  DCPS/transport/framework/TransportQueueElement.cpp
  DCPS/transport/framework/TransportReassembly.cpp
  DCPS/transport/framework/TransportReceiveListener.cpp
  DCPS/transport/framework/TransportReceiveStrategy.cpp
  DCPS/transport/framework/TransportRegistry.cpp
  DCPS/transport/framework/TransportReplacedElement.cpp
  DCPS/transport/framework/TransportRetainedElement.cpp
  DCPS/transport/framework/TransportSendBuffer.cpp
  DCPS/transport/framework/TransportSendControlElement.cpp
  DCPS/transport/framework/TransportSendElement.cpp
  DCPS/transport/framework/TransportSendListener.cpp
  DCPS/transport/framework/TransportSendStrategy.cpp
  DCPS/transport/framework/TransportStatistics.cpp
  DCPS/transport/framework/TransportStrategy.cpp
  DCPS/transport/framework/TransportType.cpp
)
target_sources(OpenDDS_Dcps
  PUBLIC FILE_SET HEADERS
  BASE_DIRS "${OPENDDS_SOURCE_DIR}"
  FILES
    ../FACE/Fixed.h
    ../FACE/OpenDDS_FACE_Export.h
    ../FACE/Sequence.h
    ../FACE/SequenceVar.h
    ../FACE/StringManager.h
    ../FACE/TS.hpp
    ../FACE/TS_common.hpp
    ../FACE/common.hpp
    ../FACE/types.hpp
    DCPS/AddressCache.h
    DCPS/AssociationData.h
    DCPS/AstNodeWrapper.h
    DCPS/Atomic.h
    DCPS/AtomicBool.h
    DCPS/BitPubListenerImpl.h
    DCPS/BuiltInTopicDataReaderImpls.h
    DCPS/BuiltInTopicUtils.h
    DCPS/Cached_Allocator_With_Overflow_T.h
    DCPS/CoherentChangeControl.h
    DCPS/CoherentChangeControl.inl
    DCPS/Comparator_T.h
    DCPS/ConditionImpl.h
    DCPS/ConditionVariable.h
    DCPS/ConfigStoreImpl.h
    DCPS/ConnectionRecords.h
    DCPS/ContentFilteredTopicImpl.h
    DCPS/DCPS_Utils.h
    DCPS/DataBlockLockPool.h
    DCPS/DataCollector_T.cpp
    DCPS/DataCollector_T.h
    DCPS/DataCollector_T.inl
    DCPS/DataDurabilityCache.h
    DCPS/DataReaderCallbacks.h
    DCPS/DataReaderImpl.h
    DCPS/DataReaderImpl.inl
    DCPS/DataReaderImpl_T.h
    DCPS/DataSampleElement.h
    DCPS/DataSampleElement.inl
    DCPS/DataSampleHeader.h
    DCPS/DataSampleHeader.inl
    DCPS/DataWriterCallbacks.h
    DCPS/DataWriterImpl.h
    DCPS/DataWriterImpl_T.h
    DCPS/DcpsUpcalls.h
    DCPS/DdsDcps_pch.h
    DCPS/DefaultNetworkConfigMonitor.h
    DCPS/Definitions.h
    DCPS/DirentWrapper.h
    DCPS/Discovery.h
    DCPS/DiscoveryListener.h
    DCPS/DisjointSequence.h
    DCPS/DisjointSequence.inl
    DCPS/DispatchService.h
    DCPS/DomainParticipantFactoryImpl.h
    DCPS/DomainParticipantImpl.h
    DCPS/DurabilityArray.h
    DCPS/DurabilityQueue.h
    DCPS/Dynamic_Cached_Allocator_With_Overflow_T.h
    DCPS/EncapsulationHeader.h
    DCPS/EndpointCallbacks.h
    DCPS/EntityImpl.h
    DCPS/EventDispatcher.h
    DCPS/FeatureDisabledQosCheck.h
    DCPS/FibonacciSequence.h
    DCPS/FileSystemStorage.h
    DCPS/FilterEvaluator.h
    DCPS/FilterExpressionGrammar.h
    DCPS/FlexibleTypeSupport.h
    DCPS/GroupRakeData.h
    DCPS/GuardCondition.h
    DCPS/GuidBuilder.h
    DCPS/GuidBuilder.inl
    DCPS/GuidConverter.h
    DCPS/GuidUtils.h
    DCPS/Hash.h
    DCPS/Ice.h
    DCPS/InstanceDataSampleList.h
    DCPS/InstanceDataSampleList.inl
    DCPS/InstanceHandle.h
    DCPS/InstanceState.h
    DCPS/InstanceState.inl
    DCPS/InternalDataReader.h
    DCPS/InternalDataReaderListener.h
    DCPS/InternalDataWriter.h
    DCPS/InternalTopic.h
    DCPS/JobQueue.h
    DCPS/JsonValueReader.h
    DCPS/JsonValueWriter.h
    DCPS/LinuxNetworkConfigMonitor.h
    DCPS/LocalObject.h
    DCPS/LogAddr.h
    DCPS/Logging.h
    DCPS/Marked_Default_Qos.h
    DCPS/MemoryPool.h
    DCPS/MessageBlock.h
    DCPS/MessageTracker.h
    DCPS/Message_Block_Ptr.h
    DCPS/MonitorFactory.h
    DCPS/MultiTask.h
    DCPS/MultiTopicDataReaderBase.h
    DCPS/MultiTopicDataReader_T.cpp
    DCPS/MultiTopicDataReader_T.h
    DCPS/MultiTopicImpl.h
    DCPS/MulticastManager.h
    DCPS/NetworkAddress.h
    DCPS/NetworkConfigModifier.h
    DCPS/NetworkConfigMonitor.h
    DCPS/NetworkResource.h
    DCPS/NetworkResource.inl
    DCPS/Observer.h
    DCPS/OwnershipManager.h
    DCPS/PeriodicEvent.h
    DCPS/PeriodicTask.h
    DCPS/PoolAllocationBase.h
    DCPS/PoolAllocator.h
    DCPS/PrinterValueWriter.h
    DCPS/PublicationInstance.h
    DCPS/PublisherImpl.h
    DCPS/Qos_Helper.h
    DCPS/Qos_Helper.inl
    DCPS/QueryConditionImpl.h
    DCPS/RakeData.h
    DCPS/RakeResults_T.cpp
    DCPS/RakeResults_T.h
    DCPS/RapidJsonWrapper.h
    DCPS/RawDataSample.h
    DCPS/RcEventHandler.h
    DCPS/RcHandle_T.h
    DCPS/RcObject.h
    DCPS/ReactorTask.h
    DCPS/ReactorTask.inl
    DCPS/ReactorTask_rch.h
    DCPS/ReadConditionImpl.h
    DCPS/ReceivedDataElementList.h
    DCPS/ReceivedDataElementList.inl
    DCPS/ReceivedDataStrategy.h
    DCPS/Recorder.h
    DCPS/RecorderImpl.h
    DCPS/Registered_Data_Types.h
    DCPS/Replayer.h
    DCPS/ReplayerImpl.h
    DCPS/RepoIdBuilder.h
    DCPS/RepoIdBuilder.inl
    DCPS/RepoIdConverter.h
    DCPS/RepoIdGenerator.h
    DCPS/RestoreOutputStreamState.h
    DCPS/SafeBool_T.h
    DCPS/SafetyProfilePool.h
    DCPS/SafetyProfileSequence.h
    DCPS/SafetyProfileSequenceVar.h
    DCPS/SafetyProfileSequences.h
    DCPS/SafetyProfileStreams.h
    DCPS/Sample.h
    DCPS/SendStateDataSampleList.h
    DCPS/SendStateDataSampleList.inl
    DCPS/SequenceIterator.h
    DCPS/SequenceNumber.h
    DCPS/Serializer.h
    DCPS/Serializer.inl
    DCPS/ServiceEventDispatcher.h
    DCPS/Service_Participant.h
    DCPS/Service_Participant.inl
    DCPS/SporadicEvent.h
    DCPS/SporadicTask.h
    DCPS/StaticDiscovery.h
    DCPS/StaticIncludes.h
    DCPS/Statistics.h
    DCPS/Stats_T.h
    DCPS/StatusConditionImpl.h
    DCPS/SubscriberImpl.h
    DCPS/SubscriptionInstance.h
    DCPS/ThreadPool.h
    DCPS/ThreadStatusManager.h
    DCPS/TimeDuration.h
    DCPS/TimeDuration.inl
    DCPS/TimePoint_T.cpp
    DCPS/TimePoint_T.h
    DCPS/TimePoint_T.inl
    DCPS/TimeSource.h
    DCPS/TimeTypes.h
    DCPS/Time_Helper.h
    DCPS/Time_Helper.inl
    DCPS/TopicCallbacks.h
    DCPS/TopicDescriptionImpl.h
    DCPS/TopicDetails.h
    DCPS/TopicExpressionGrammar.h
    DCPS/TopicImpl.h
    DCPS/Transient_Kludge.h
    DCPS/Transient_Kludge.inl
    DCPS/TypeSupportImpl.h
    DCPS/TypeSupportImpl_T.h
    DCPS/Util.h
    DCPS/ValueCommon.h
    DCPS/ValueDispatcher.h
    DCPS/ValueHelper.h
    DCPS/ValueReader.h
    DCPS/ValueWriter.h
    DCPS/WaitSet.h
    DCPS/WriteDataContainer.h
    DCPS/WriterDataSampleList.h
    DCPS/WriterDataSampleList.inl
    DCPS/WriterInfo.h
    DCPS/XTypes/DynamicDataAdapter.h
    DCPS/XTypes/DynamicDataAdapterFwd.h
    DCPS/XTypes/DynamicDataBase.h
    DCPS/XTypes/DynamicDataFactory.h
    DCPS/XTypes/DynamicDataImpl.h
    DCPS/XTypes/DynamicDataReaderImpl.h
    DCPS/XTypes/DynamicDataWriterImpl.h
    DCPS/XTypes/DynamicDataXcdrReadImpl.h
    DCPS/XTypes/DynamicSample.h
    DCPS/XTypes/DynamicTypeImpl.h
    DCPS/XTypes/DynamicTypeMemberImpl.h
    DCPS/XTypes/DynamicTypeSupport.h
    DCPS/XTypes/DynamicVwrite.h
    DCPS/XTypes/External.h
    DCPS/XTypes/IdlScanner.h
    DCPS/XTypes/MemberDescriptorImpl.h
    DCPS/XTypes/TypeAssignability.h
    DCPS/XTypes/TypeDescriptorImpl.h
    DCPS/XTypes/TypeLookupService.h
    DCPS/XTypes/TypeObject.h
    DCPS/XTypes/TypeObjectC.h
    DCPS/XTypes/TypeObjectTypeSupportImpl.h
    DCPS/XTypes/Utils.h
    DCPS/Xcdr2ValueWriter.h
    DCPS/ZeroCopyAllocator_T.cpp
    DCPS/ZeroCopyAllocator_T.h
    DCPS/ZeroCopyAllocator_T.inl
    DCPS/ZeroCopyInfoSeq_T.h
    DCPS/ZeroCopySeqBase.h
    DCPS/ZeroCopySeq_T.cpp
    DCPS/ZeroCopySeq_T.h
    DCPS/ZeroCopySeq_T.inl
    DCPS/dcps_export.h
    DCPS/debug.h
    DCPS/optional.h
    DCPS/security/framework/HandleRegistry.h
    DCPS/security/framework/Properties.h
    DCPS/security/framework/SecurityConfig.h
    DCPS/security/framework/SecurityConfigPropertyList.h
    DCPS/security/framework/SecurityConfig_rch.h
    DCPS/security/framework/SecurityPluginInst.h
    DCPS/security/framework/SecurityPluginInst_rch.h
    DCPS/security/framework/SecurityRegistry.h
    DCPS/security/framework/Utility.h
    DCPS/transport/framework/BasicQueueVisitor_T.h
    DCPS/transport/framework/BasicQueue_T.h
    DCPS/transport/framework/BuildChainVisitor.h
    DCPS/transport/framework/BuildChainVisitor.inl
    DCPS/transport/framework/CopyChainVisitor.h
    DCPS/transport/framework/CopyChainVisitor.inl
    DCPS/transport/framework/DataLink.h
    DCPS/transport/framework/DataLink.inl
    DCPS/transport/framework/DataLinkCleanupTask.h
    DCPS/transport/framework/DataLinkSet.h
    DCPS/transport/framework/DataLinkSet.inl
    DCPS/transport/framework/DataLinkSet_rch.h
    DCPS/transport/framework/DataLink_rch.h
    DCPS/transport/framework/DirectPriorityMapper.h
    DCPS/transport/framework/DirectPriorityMapper.inl
    DCPS/transport/framework/EntryExit.h
    DCPS/transport/framework/MessageDropper.h
    DCPS/transport/framework/NullSynch.h
    DCPS/transport/framework/NullSynch.inl
    DCPS/transport/framework/NullSynchStrategy.h
    DCPS/transport/framework/PacketRemoveVisitor.h
    DCPS/transport/framework/PacketRemoveVisitor.inl
    DCPS/transport/framework/PerConnectionSynch.h
    DCPS/transport/framework/PerConnectionSynch.inl
    DCPS/transport/framework/PerConnectionSynchStrategy.h
    DCPS/transport/framework/PerConnectionSynchStrategy.inl
    DCPS/transport/framework/PoolSynch.h
    DCPS/transport/framework/PoolSynch.inl
    DCPS/transport/framework/PoolSynchStrategy.h
    DCPS/transport/framework/PoolSynchStrategy.inl
    DCPS/transport/framework/PriorityKey.h
    DCPS/transport/framework/PriorityKey.inl
    DCPS/transport/framework/PriorityMapper.h
    DCPS/transport/framework/PriorityMapper.inl
    DCPS/transport/framework/QueueRemoveVisitor.h
    DCPS/transport/framework/QueueRemoveVisitor.inl
    DCPS/transport/framework/QueueTaskBase_T.h
    DCPS/transport/framework/ReactorSynch.h
    DCPS/transport/framework/ReactorSynch.inl
    DCPS/transport/framework/ReactorSynchStrategy.h
    DCPS/transport/framework/ReactorSynchStrategy.inl
    DCPS/transport/framework/ReceiveListenerSet.h
    DCPS/transport/framework/ReceiveListenerSet.inl
    DCPS/transport/framework/ReceiveListenerSetMap.h
    DCPS/transport/framework/ReceiveListenerSetMap.inl
    DCPS/transport/framework/ReceiveListenerSet_rch.h
    DCPS/transport/framework/ReceivedDataSample.h
    DCPS/transport/framework/RemoveAllVisitor.h
    DCPS/transport/framework/RemoveAllVisitor.inl
    DCPS/transport/framework/ScheduleOutputHandler.h
    DCPS/transport/framework/ScheduleOutputHandler.inl
    DCPS/transport/framework/SendResponseListener.h
    DCPS/transport/framework/ThreadPerConRemoveVisitor.h
    DCPS/transport/framework/ThreadPerConRemoveVisitor.inl
    DCPS/transport/framework/ThreadPerConnectionSendTask.h
    DCPS/transport/framework/ThreadSynch.h
    DCPS/transport/framework/ThreadSynch.inl
    DCPS/transport/framework/ThreadSynchResource.h
    DCPS/transport/framework/ThreadSynchResource.inl
    DCPS/transport/framework/ThreadSynchStrategy.h
    DCPS/transport/framework/ThreadSynchStrategy.inl
    DCPS/transport/framework/ThreadSynchStrategy_rch.h
    DCPS/transport/framework/ThreadSynchWorker.h
    DCPS/transport/framework/ThreadSynchWorker.inl
    DCPS/transport/framework/TransportClient.h
    DCPS/transport/framework/TransportConfig.h
    DCPS/transport/framework/TransportConfig_rch.h
    DCPS/transport/framework/TransportControlElement.h
    DCPS/transport/framework/TransportControlElement.inl
    DCPS/transport/framework/TransportCustomizedElement.h
    DCPS/transport/framework/TransportCustomizedElement.inl
    DCPS/transport/framework/TransportDebug.h
    DCPS/transport/framework/TransportDefs.h
    DCPS/transport/framework/TransportExceptions.h
    DCPS/transport/framework/TransportHeader.h
    DCPS/transport/framework/TransportHeader.inl
    DCPS/transport/framework/TransportImpl.h
    DCPS/transport/framework/TransportImpl.inl
    DCPS/transport/framework/TransportImpl_rch.h
    DCPS/transport/framework/TransportInst.h
    DCPS/transport/framework/TransportInst_rch.h
    DCPS/transport/framework/TransportQueueElement.h
    DCPS/transport/framework/TransportQueueElement.inl
    DCPS/transport/framework/TransportReassembly.h
    DCPS/transport/framework/TransportReceiveListener.h
    DCPS/transport/framework/TransportReceiveStrategy_T.cpp
    DCPS/transport/framework/TransportReceiveStrategy_T.h
    DCPS/transport/framework/TransportReceiveStrategy_T.inl
    DCPS/transport/framework/TransportReceiveStrategy_rch.h
    DCPS/transport/framework/TransportRegistry.h
    DCPS/transport/framework/TransportRegistry.inl
    DCPS/transport/framework/TransportReplacedElement.h
    DCPS/transport/framework/TransportReplacedElement.inl
    DCPS/transport/framework/TransportRetainedElement.h
    DCPS/transport/framework/TransportRetainedElement.inl
    DCPS/transport/framework/TransportSendBuffer.h
    DCPS/transport/framework/TransportSendBuffer.inl
    DCPS/transport/framework/TransportSendControlElement.h
    DCPS/transport/framework/TransportSendControlElement.inl
    DCPS/transport/framework/TransportSendElement.h
    DCPS/transport/framework/TransportSendElement.inl
    DCPS/transport/framework/TransportSendListener.h
    DCPS/transport/framework/TransportSendStrategy.h
    DCPS/transport/framework/TransportSendStrategy.inl
    DCPS/transport/framework/TransportSendStrategy_rch.h
    DCPS/transport/framework/TransportStatistics.h
    DCPS/transport/framework/TransportStrategy.h
    DCPS/transport/framework/TransportStrategy_rch.h
    DCPS/transport/framework/TransportType.h
    DCPS/transport/framework/TransportType_rch.h
    DCPS/unique_ptr.h
    DCPS/yard/yard_base_grammar.hpp
    DCPS/yard/yard_char_set.hpp
    DCPS/yard/yard_parser.hpp
    DCPS/yard/yard_text_grammar.hpp
    DCPS/yard/yard_tree.hpp
    Version.h
    Versioned_Namespace.h
    OpenDDSConfigWrapper.h
    OpenDDSConfigWrapperC.h
    OpenDDSConfigWrapper.idl
)
target_compile_definitions(OpenDDS_Dcps PUBLIC ${OPENDDS_DCPS_COMPILE_DEFINITIONS})
_opendds_library(OpenDDS_Dcps BIGOBJ)
target_include_directories(OpenDDS_Dcps
  PUBLIC
    "$<BUILD_INTERFACE:${OPENDDS_SOURCE_DIR}>"
    "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
  PRIVATE
    "${CMAKE_CURRENT_SOURCE_DIR}"
)
if(OPENDDS_RAPIDJSON)
  target_include_directories(OpenDDS_Dcps PUBLIC "$<BUILD_INTERFACE:${OPENDDS_RAPIDJSON}/include>")
endif()
target_link_libraries(OpenDDS_Dcps PUBLIC ${dcps_lib_deps})

set(opendds_target_sources_args
  AUTO_LINK FALSE
  USE_EXPORT "dds/DCPS/dcps_export.h" OpenDDS_Dcps_Export
  INCLUDE_BASE "${OPENDDS_SOURCE_DIR}"
  USE_VERSIONED_NAMESPACE "dds/Versioned_Namespace.h" OPENDDS
)

opendds_target_sources(OpenDDS_Dcps
  PUBLIC
    CorbaSeq/BooleanSeq.idl
    CorbaSeq/CharSeq.idl
    CorbaSeq/DoubleSeq.idl
    CorbaSeq/FloatSeq.idl
    CorbaSeq/Int8Seq.idl
    CorbaSeq/LongDoubleSeq.idl
    CorbaSeq/LongLongSeq.idl
    CorbaSeq/LongSeq.idl
    CorbaSeq/OctetSeq.idl
    CorbaSeq/ShortSeq.idl
    CorbaSeq/StringSeq.idl
    CorbaSeq/UInt8Seq.idl
    CorbaSeq/ULongLongSeq.idl
    CorbaSeq/ULongSeq.idl
    CorbaSeq/UShortSeq.idl
    CorbaSeq/WCharSeq.idl
    CorbaSeq/WStringSeq.idl
  SKIP_TAO_IDL
  OPENDDS_IDL_OPTIONS -SI -Wb,tao_include_prefix=tao/
  ${opendds_target_sources_args}
)

# TODO: Ones marked TODO should be processed differently in safety profile.
# See dcps_optional_safety.mpb.
opendds_target_sources(OpenDDS_Dcps
  PUBLIC
    DdsDcps.idl
    DdsDcpsConditionSeq.idl # TODO
    DdsDcpsDataReaderSeq.idl # TODO
    DdsDcpsDomain.idl
    DdsDcpsPublication.idl
    DdsDcpsSubscription.idl
    DdsDcpsSubscriptionExt.idl
    DdsDcpsTopic.idl
    DdsDcpsTypeSupportExt.idl
  ${opendds_target_sources_args}
  SKIP_OPENDDS_IDL
)

opendds_target_sources(OpenDDS_Dcps
  PUBLIC
    DdsDcpsCore.idl # TODO
    DdsDcpsGuid.idl # TODO
    DdsDcpsInfrastructure.idl
    DdsDcpsInfoUtils.idl # TODO
    DdsDynamicDataSeq.idl
    DdsSecurityCore.idl # TODO
    DdsSecurityParams.idl # TODO
    OpenddsDcpsExt.idl # TODO
  ${opendds_target_sources_args}
)

# valuetypes in DdsDynamicData.idl require -Scdr
# -Scdr requires -Sa whether or not the dds_suppress_anys feature is on
opendds_target_sources(OpenDDS_Dcps
  PUBLIC
    DdsDynamicData.idl
    DdsDynamicTypeSupport.idl
  TAO_IDL_OPTIONS -Scdr -Sa
  ${opendds_target_sources_args}
  SKIP_OPENDDS_IDL
)

opendds_install_interface_files(OpenDDS_Dcps INCLUDE_BASE "${OPENDDS_SOURCE_DIR}")
